/* ###
 * IP: GHIDRA
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package ghidra.app.plugin.core.debug.mapping;

import java.util.Set;

import ghidra.dbg.target.TargetObject;
import ghidra.debug.api.model.DebuggerTargetTraceMapper;
import ghidra.program.model.lang.*;

public class ObjectBasedDebuggerMappingOffer extends DefaultDebuggerMappingOffer {
	private static final String DESCRIPTION =
		"EXPERIMENTAL: Object-based recording, deferred mapping";
	private static final int CONFIDENCE = -100;  // TODO: Increase this when it becomes preferred
	protected static final LanguageID LANGID_DATA64 = new LanguageID("DATA:BE:64:default");
	protected static final CompilerSpecID CSID_PTR64 = new CompilerSpecID("pointer64");

	public ObjectBasedDebuggerMappingOffer(TargetObject target) {
		// TODO: Is extraRegNames relevant?
		super(target, CONFIDENCE, DESCRIPTION, LANGID_DATA64, CSID_PTR64, Set.of());
	}

	@Override
	protected DebuggerTargetTraceMapper createMapper()
			throws LanguageNotFoundException, CompilerSpecNotFoundException {
		return new ObjectBasedDebuggerTargetTraceMapper(target, langID, csID, extraRegNames);
	}
}
